"""Ollama模型交互模块

本模块提供与Ollama大语言模型交互的功能，专门用于生成毛主席的名言及其解释。

主要功能：
- 使用指定模型生成毛主席名言
- 返回格式化的名言解释文本

使用示例：
    >>> from demo_ai_ollama.model import generate_mao_quote
    >>> quote = generate_mao_quote()
    >>> print(quote)
"""

import ollama


def generate_mao_quote(
    model_name: str = "qwen3:8b-q4_k_m",
    host: str = "http://localhost",
    port: int = 11434,
) -> str:
    """使用Ollama模型生成毛主席名言及其解释。

    本函数会连接指定的Ollama服务，使用配置的模型生成
    毛主席的名言及其解释文本。

    Args:
        model_name: 要使用的模型名称，默认为 'qwen3:8b-q4_k_m'
        host: Ollama服务主机地址，默认为 'http://localhost'
        port: Ollama服务端口，默认为 11434

    Returns:
        str: 包含毛主席名言及其详细解释的文本，格式为纯字符串

    Raises:
        RuntimeError: 当模型交互失败时抛出，可能原因包括：
            - Ollama服务未运行
            - 模型不存在
            - 网络连接问题
    """
    try:
        client = ollama.Client(host=f"{host}:{port}")
        response = client.generate(
            model=model_name, prompt="生成毛主席的一句名言，并解释"
        )
        return response["response"]
    except Exception as e:
        raise RuntimeError(f"模型交互失败: {str(e)}") from e


if __name__ == "__main__":
    import argparse

    parser = argparse.ArgumentParser(description="与Ollama模型交互生成毛主席名言解释")
    parser.add_argument(
        "-m",
        "--model",
        default="qwen3:8b-q4_k_m",
        help="模型名称 (默认: qwen3:8b-q4_k_m)",
    )
    parser.add_argument(
        "-H",
        "--host",
        default="http://localhost",
        help="Ollama服务主机地址 (默认: http://localhost)",
    )
    parser.add_argument(
        "-p", "--port", type=int, default=11434, help="Ollama服务端口号 (默认: 11434)"
    )
    args = parser.parse_args()
    print(generate_mao_quote(model_name=args.model, host=args.host, port=args.port))
